package com.mryqr.core.printing.domain;

import static com.mryqr.core.printing.domain.MaterialType.*;

public enum PlatePrintingType {
    TRANSPARENT_ACRYLIC_50x40(TRANSPARENT_ACRYLIC, "50*40mm", 3.0),
    TRANSPARENT_ACRYLIC_50x50(TRANSPARENT_ACRYLIC, "50*50mm", 3.0),
    TRANSPARENT_ACRYLIC_60x40(TRANSPARENT_ACRYLIC, "60*40mm", 3.0),
    TRANSPARENT_ACRYLIC_60x60(TRANSPARENT_ACRYLIC, "60*60mm", 3.0),
    TRANSPARENT_ACRYLIC_70x50(TRANSPARENT_ACRYLIC, "70*50mm", 4.0),
    TRANSPARENT_ACRYLIC_70x70(TRANSPARENT_ACRYLIC, "70*70mm", 4.0),
    TRANSPARENT_ACRYLIC_80x50(TRANSPARENT_ACRYLIC, "80*50mm", 4.0),
    TRANSPARENT_ACRYLIC_80x60(TRANSPARENT_ACRYLIC, "80*60mm", 4.0),
    TRANSPARENT_ACRYLIC_90x60(TRANSPARENT_ACRYLIC, "90*60mm", 4.0),
    TRANSPARENT_ACRYLIC_100x70(TRANSPARENT_ACRYLIC, "100*70mm", 5.0),
    TRANSPARENT_ACRYLIC_40x50(TRANSPARENT_ACRYLIC, "40*50mm", 3.0),
    TRANSPARENT_ACRYLIC_40x60(TRANSPARENT_ACRYLIC, "40*60mm", 3.0),
    TRANSPARENT_ACRYLIC_50x70(TRANSPARENT_ACRYLIC, "50*70mm", 4.0),
    TRANSPARENT_ACRYLIC_50x80(TRANSPARENT_ACRYLIC, "50*80mm", 4.0),
    TRANSPARENT_ACRYLIC_60x80(TRANSPARENT_ACRYLIC, "60*80mm", 4.0),
    TRANSPARENT_ACRYLIC_60x90(TRANSPARENT_ACRYLIC, "60*90mm", 4.0),
    TRANSPARENT_ACRYLIC_70x100(TRANSPARENT_ACRYLIC, "70*100mm", 5.0),

    PORCELAIN_ACRYLIC_50x40(PORCELAIN_ACRYLIC, "50*40mm", 3.0),
    PORCELAIN_ACRYLIC_50x50(PORCELAIN_ACRYLIC, "50*50mm", 3.0),
    PORCELAIN_ACRYLIC_60x40(PORCELAIN_ACRYLIC, "60*40mm", 3.0),
    PORCELAIN_ACRYLIC_60x60(PORCELAIN_ACRYLIC, "60*60mm", 3.0),
    PORCELAIN_ACRYLIC_70x50(PORCELAIN_ACRYLIC, "70*50mm", 4.0),
    PORCELAIN_ACRYLIC_70x70(PORCELAIN_ACRYLIC, "70*70mm", 4.0),
    PORCELAIN_ACRYLIC_80x50(PORCELAIN_ACRYLIC, "80*50mm", 4.0),
    PORCELAIN_ACRYLIC_80x60(PORCELAIN_ACRYLIC, "80*60mm", 4.0),
    PORCELAIN_ACRYLIC_90x60(PORCELAIN_ACRYLIC, "90*60mm", 4.0),
    PORCELAIN_ACRYLIC_100x70(PORCELAIN_ACRYLIC, "100*70mm", 5.0),
    PORCELAIN_ACRYLIC_40x50(PORCELAIN_ACRYLIC, "40*50mm", 3.0),
    PORCELAIN_ACRYLIC_40x60(PORCELAIN_ACRYLIC, "40*60mm", 3.0),
    PORCELAIN_ACRYLIC_50x70(PORCELAIN_ACRYLIC, "50*70mm", 4.0),
    PORCELAIN_ACRYLIC_50x80(PORCELAIN_ACRYLIC, "50*80mm", 4.0),
    PORCELAIN_ACRYLIC_60x80(PORCELAIN_ACRYLIC, "60*80mm", 4.0),
    PORCELAIN_ACRYLIC_60x90(PORCELAIN_ACRYLIC, "60*90mm", 4.0),
    PORCELAIN_ACRYLIC_70x100(PORCELAIN_ACRYLIC, "70*100mm", 5.0),


    PVC_CARD_50x40(PVC_CARD, "50*40mm", 2.0),
    PVC_CARD_50x50(PVC_CARD, "50*50mm", 2.5),
    PVC_CARD_60x40(PVC_CARD, "60*40mm", 2.5),
    PVC_CARD_60x60(PVC_CARD, "60*60mm", 3.0),
    PVC_CARD_70x50(PVC_CARD, "70*50mm", 3.0),
    PVC_CARD_70x70(PVC_CARD, "70*70mm", 3.5),
    PVC_CARD_80x50(PVC_CARD, "80*50mm", 3.5),
    PVC_CARD_80x60(PVC_CARD, "80*60mm", 4.0),
    PVC_CARD_90x60(PVC_CARD, "90*60mm", 4.0),
    PVC_CARD_100x70(PVC_CARD, "100*70mm", 5.0),
    PVC_CARD_40x50(PVC_CARD, "40*50mm", 2.0),
    PVC_CARD_40x60(PVC_CARD, "40*60mm", 2.5),
    PVC_CARD_50x70(PVC_CARD, "50*70mm", 3.0),
    PVC_CARD_50x80(PVC_CARD, "50*80mm", 3.5),
    PVC_CARD_60x80(PVC_CARD, "60*80mm", 4.0),
    PVC_CARD_60x90(PVC_CARD, "60*90mm", 4.0),
    PVC_CARD_70x100(PVC_CARD, "70*100mm", 5.0),

    PP_ADHESIVE_50x40(SYNTHETIC_ADHESIVE, "50*40mm", 0.7),
    PP_ADHESIVE_50x50(SYNTHETIC_ADHESIVE, "50*50mm", 0.7),
    PP_ADHESIVE_60x40(SYNTHETIC_ADHESIVE, "60*40mm", 0.7),
    PP_ADHESIVE_60x60(SYNTHETIC_ADHESIVE, "60*60mm", 1.0),
    PP_ADHESIVE_70x50(SYNTHETIC_ADHESIVE, "70*50mm", 1.0),
    PP_ADHESIVE_70x70(SYNTHETIC_ADHESIVE, "70*70mm", 1.2),
    PP_ADHESIVE_80x50(SYNTHETIC_ADHESIVE, "80*50mm", 1.2),
    PP_ADHESIVE_80x60(SYNTHETIC_ADHESIVE, "80*60mm", 1.5),
    PP_ADHESIVE_90x60(SYNTHETIC_ADHESIVE, "90*60mm", 1.8),
    PP_ADHESIVE_100x70(SYNTHETIC_ADHESIVE, "100*70mm", 2.0),
    PP_ADHESIVE_40x50(SYNTHETIC_ADHESIVE, "40*50mm", 0.7),
    PP_ADHESIVE_40x60(SYNTHETIC_ADHESIVE, "40*60mm", 0.7),
    PP_ADHESIVE_50x70(SYNTHETIC_ADHESIVE, "50*70mm", 1.0),
    PP_ADHESIVE_50x80(SYNTHETIC_ADHESIVE, "50*80mm", 1.2),
    PP_ADHESIVE_60x80(SYNTHETIC_ADHESIVE, "60*80mm", 1.5),
    PP_ADHESIVE_60x90(SYNTHETIC_ADHESIVE, "60*90mm", 1.8),
    PP_ADHESIVE_70x100(SYNTHETIC_ADHESIVE, "70*100mm", 2.0),

    ARGENTOUS_ADHESIVE_50x40(ARGENTOUS_ADHESIVE, "50*40mm", 0.7),
    ARGENTOUS_ADHESIVE_50x50(ARGENTOUS_ADHESIVE, "50*50mm", 0.7),
    ARGENTOUS_ADHESIVE_60x40(ARGENTOUS_ADHESIVE, "60*40mm", 0.7),
    ARGENTOUS_ADHESIVE_60x60(ARGENTOUS_ADHESIVE, "60*60mm", 1.0),
    ARGENTOUS_ADHESIVE_70x50(ARGENTOUS_ADHESIVE, "70*50mm", 1.0),
    ARGENTOUS_ADHESIVE_70x70(ARGENTOUS_ADHESIVE, "70*70mm", 1.2),
    ARGENTOUS_ADHESIVE_80x50(ARGENTOUS_ADHESIVE, "80*50mm", 1.2),
    ARGENTOUS_ADHESIVE_80x60(ARGENTOUS_ADHESIVE, "80*60mm", 1.5),
    ARGENTOUS_ADHESIVE_90x60(ARGENTOUS_ADHESIVE, "90*60mm", 1.8),
    ARGENTOUS_ADHESIVE_100x70(ARGENTOUS_ADHESIVE, "100*70mm", 2.0),
    ARGENTOUS_ADHESIVE_40x50(ARGENTOUS_ADHESIVE, "40*50mm", 0.7),
    ARGENTOUS_ADHESIVE_40x60(ARGENTOUS_ADHESIVE, "40*60mm", 0.7),
    ARGENTOUS_ADHESIVE_50x70(ARGENTOUS_ADHESIVE, "50*70mm", 1.0),
    ARGENTOUS_ADHESIVE_50x80(ARGENTOUS_ADHESIVE, "50*80mm", 1.2),
    ARGENTOUS_ADHESIVE_60x80(ARGENTOUS_ADHESIVE, "60*80mm", 1.5),
    ARGENTOUS_ADHESIVE_60x90(ARGENTOUS_ADHESIVE, "60*90mm", 1.8),
    ARGENTOUS_ADHESIVE_70x100(ARGENTOUS_ADHESIVE, "70*100mm", 2.0);

    private final MaterialType materialType;
    private final String size;
    private final double unitPrice;
    private final double deliveryFee;

    PlatePrintingType(MaterialType materialType, String size, double unitPrice) {
        this.materialType = materialType;
        this.size = size;
        this.unitPrice = unitPrice;
        this.deliveryFee = 0;
    }

    public MaterialType getMaterialType() {
        return materialType;
    }

    public String getSize() {
        return size;
    }

    public double getUnitPrice() {
        return unitPrice;
    }

    public double getDeliveryFee() {
        return deliveryFee;
    }

    public String description() {
        return materialType.getName() + " " + size;
    }
}
